﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Rendiciones.Logica.Modelos;
using Rendiciones.Logica.Servicios;
using Rendiciones.Web.infraestructura;

namespace Rendiciones.Web.Contador
{
    public partial class VerRendicionAprobada : PageBase
    {
        private static ServGastos _servGastos;
        public Usuario usuario;
        public Rendicion rendicion;
        protected void Page_Load(object sender, EventArgs e)
        {
            Button btnYes = (Button)ctrlVerGasto.FindControl("BtnGuardarGasto");
            btnYes.Click += new EventHandler(ctrlAgregarGasto_btnYes_Click);
            usuario = (Usuario)Session["usuario"];
            if (usuario == null) Response.Redirect("~/IniciarSesion.aspx");

            if (!IsPostBack)
            {
                rendicion = new Rendicion();
                _servGastos = new ServGastos();
                DropDownList1.DataTextField = "Nombre";
                DropDownList1.DataValueField = "IdProyecto";

                var idRendicion = int.Parse(Session["RendicionParaCargar"].ToString());
                rendicion = _servGastos.CargarRendicionPorId(idRendicion);
                rendicion.DetallesGasto = _servGastos.BuscarGastosDeRendicion(rendicion.IdRendicion).Where(g => !g.Rechazado && !g.Eliminado).ToList();
                CargarRendicionSolicitada(rendicion);
                Session["RendicionParaCargar"] = null;
            }
        }

        void ctrlAgregarGasto_btnYes_Click(object sender, EventArgs e)
        {
            Session["index"] = null;
        }


        protected void grRendicion_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var index = int.Parse(e.CommandArgument.ToString());

            Session["index"] = index;

            if (e.CommandName == "Editar")
            {
                var gastos = (List<Gasto>)Session["datasource"];
                var gasto = gastos[index];
                ctrlVerGasto.NroGasto = (index + 1).ToString();
                ctrlVerGasto.CargaDatosAPopup(gasto);
            }
        }

        public void CargarRendicionSolicitada(Rendicion rendicion)
        {
            Session["IdRendicion"] = rendicion.IdRendicion;
            Session["datasource"] = rendicion.DetallesGasto;
            var proyectos = new List<Proyecto>();
            var proyecto = Modulos.Rendiciones.Proyectos.Leer(rendicion.IdProyecto);
            proyectos.Add(proyecto);
            DropDownList1.DataSource = proyectos;
            DropDownList1.DataBind();
            DropDownList1.SelectedIndex = rendicion.IdProyecto;
            TextBox1.Text = rendicion.CentroCosto;
            TextBox2.Text = rendicion.FondoAsignado.ToString();
            TextBox3.Text = rendicion.Saldo.ToString();
            lblTitulo.Text = "Rendicion Nro : " + rendicion.IdRendicion;
            lblusuarioIngreso.Text = "Usuario Ingreso : " + rendicion.UsuarioIngreso;

            grRendicion.DataSource = rendicion.DetallesGasto;
            grRendicion.DataBind();
            lblTotalPagado.Text = CalculaTotal().ToString();

        }

        public int CalculaTotal()
        {
            var listadoGastos = (List<Gasto>)Session["datasource"];
            var totalGastos = listadoGastos.Sum(gasto => gasto.TotalPagado);
            return totalGastos;
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            Response.Redirect("MisAprobados.aspx");
        }
    }
}